High resolution structures of proteins and nucleic acids can be obtained using X-ray crystallography or nuclear magnetic resonance. Often more than a man year is required to analyze a modest sized molecule. The basic steps are sample preparation, data acquisition, and analysis. The majority of the time for an NMR study is spent doing data analysis. The analysis involves identifying thousands of spectral peaks in 1, 2, 3 and 4 dimensional spectra and using peak intensities as constraints in structure calculations. Many pieces of this process which can be automated have not been. Many novel analysis techniques are reimplemented by every NMR lab that wishes to use them. Sparky is a computer program for NMR spectroscopists. It's a graphical viewer, bookkeeper and analyzer to assist in peak assignment and integration. These are the early data processing steps for determining molecular structures and dynamics from NMR spectra. Sparky is developed with ideas and feedback from Thomas James' NMR group using Computer Graphics Lab machines and software development tools. The purpose is to test and distribute new methods for NMR data analysis and reduce the repetitive tasks required of the spectroscopist in determining structures of proteins and nucleic acids. In 1997, the Python language was incorporated for users to write extensions to Sparky. Capabilities were added to display NMR interactions on molecular models, to check consistency of interatom distances with NMR peak intensities, to assist 3D noesy peak assignment, to display peak diagrams, and to examine chemical shift overlaps. The number of sites licensing Sparky is 12. A web site, http://www.cgl.ucsf.edu/home/sparky, was set up for distributing the program and documentation.